home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / pc / 3DTOSHI2.ZIP / mpgfx / include / gfxflic.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-04-20  |  4.2 KB  |  168 lines

  1.  
  2. // gfxflic.h
  3. //
  4. // Copyright (c) 1995 by Toshiaki Tsuji, all rights reserved.
  5.  
  6. #ifndef __GFXFLICPLAY_H__
  7. #define __GFXFLICPLAY_H__
  8.  
  9. #include "stdgfx.h"
  10. #include "gfximage.h"
  11. #include "gfxfiles.h"
  12. #include "gfxcltbl.h"
  13.  
  14. #define ID_FLI 0xAF11
  15. #define ID_FLC 0xAF12
  16.  
  17. struct FLIHEADER
  18.   {
  19.     DWORD Size;
  20.     SHORT ID;
  21.     SHORT NumFrames;
  22.     SHORT Width;
  23.     SHORT Height;
  24.     SHORT Reserved1;
  25.     SHORT Flag;
  26.     SHORT Speed;
  27.     LONG  Next;
  28.     LONG  Frit;
  29.     BYTE  Resrved2[102];
  30.   }; // End of FLIHEADER
  31.  
  32. struct FLCHEADER
  33.   {
  34.     DWORD Size;
  35.     SHORT ID;
  36.     SHORT NumFrames;
  37.     SHORT Width;
  38.     SHORT Height;
  39.     SHORT Bits;
  40.     SHORT Flag;
  41.     LONG  Speed;
  42.     SHORT Unused;
  43.     LONG  Created;
  44.     LONG  Creator;
  45.     LONG  Updated;
  46.     LONG  Updator;
  47.     SHORT AspectX;
  48.     SHORT AspectY;
  49.     BYTE  Reserved1[38];
  50.     DWORD Offset1;
  51.     DWORD Offset2;
  52.     BYTE  Reserved[40];
  53.   }; // End of FLCHEADER
  54.  
  55. struct FRAMEHEADER
  56.   {
  57.     DWORD Size;
  58.     SHORT ID;
  59.     SHORT NumChunks;
  60.     BYTE  Reserved[8];
  61.   }; // End of FRAMEHEADER
  62.  
  63. struct CHUNKHEADER
  64.   {
  65.     DWORD Size;
  66.     SHORT Type;
  67.   }; // End of CHUNKHEADER
  68.  
  69. // FLI/FLC Chunk Code
  70. #define FLI_COLOR_256  4  // For FLC
  71. #define FLI_WORD_LC    7  // For FLC
  72. #define FLI_COLOR     11
  73. #define FLI_LC        12
  74. #define FLI_BLACK     13
  75. #define FLI_BRUN      15
  76. #define FLI_COPY      16
  77. #define FLI_PREVIEW   18  // For FLC
  78.  
  79. struct CHUNK_DATA
  80.   {
  81.     CHUNKHEADER Header;
  82.     BYTE *Data;
  83.   }; // End of CHUNK_DATA
  84.  
  85. struct FRAME_DATA
  86.   {
  87.     SHORT NumChunks;
  88.     CHUNK_DATA *Chunks;
  89.   }; // End of FRAME_DATA
  90.  
  91. union FLICHEADER
  92.   {
  93.     FLIHEADER FLI;
  94.     FLCHEADER FLC;
  95.   }; // End of FLICHEADER
  96.  
  97. #define FLIC_LOOP_INFINITE -1
  98. #define FLIC_SPEED_DEFAULT -1
  99.    
  100. class FLICFILE : public MYOBJECT
  101.   {
  102.     protected :    
  103.       FLICHEADER FLICHeader;
  104.       BOOLEAN    IsFLC; // TRUE if this is FLC file
  105.       FRAME_DATA *FrameData;
  106.       FILEHANDLE f;
  107.       LONG CurrentFrame;
  108.       IMAGE *Image;
  109.       RGBPALETTE *Pal;
  110.       BOOLEAN PalChange;
  111.       HDISPLAY hDisplay;
  112.       LONG DefaultSpeed;
  113.       
  114.       BOOLEAN ReadHeader ();
  115.       BOOLEAN ReadChunk ( CHUNK_DATA *Chunk );
  116.       BOOLEAN ReadFrame ( LONG WhichFrame );
  117.       VOID DestroyFrames ();
  118.       
  119.       BOOLEAN DoColor ( RGBPALETTE *Pal, CHUNK_DATA* Chunk, BOOLEAN Is256 );
  120.       BOOLEAN DoLine ( IMAGE *Image, CHUNK_DATA* Chunk );
  121.       BOOLEAN DoLineWord ( IMAGE *Image, CHUNK_DATA* Chunk );
  122.       BOOLEAN DoBRun ( IMAGE *Image, CHUNK_DATA* Chunk );
  123.       BOOLEAN DoCopy ( IMAGE *Image, CHUNK_DATA* Chunk );
  124.       BOOLEAN DoBlack ( IMAGE *Image, CHUNK_DATA* Chunk );
  125.       BOOLEAN DoPreview ( IMAGE *Image, CHUNK_DATA* Chunk );
  126.       
  127.       VOID ConvertColor ( CHUNK_DATA* Chunk, BOOLEAN Is256, COLORTABLE *Table );
  128.       VOID ConvertLine ( CHUNK_DATA* Chunk, COLORTABLE *Table );
  129.       VOID ConvertLineWord ( CHUNK_DATA* Chunk, COLORTABLE *Table );
  130.       VOID ConvertBRun ( CHUNK_DATA* Chunk, COLORTABLE *Table );
  131.       VOID ConvertCopy ( CHUNK_DATA* Chunk, COLORTABLE *Table );
  132.       VOID ConvertBlack ( CHUNK_DATA* Chunk, COLORTABLE *Table );
  133.       VOID ConvertPreview ( CHUNK_DATA* Chunk, COLORTABLE *Table );
  134.       
  135.     public :
  136.       LONG Loop;
  137.       LONG Speed;
  138.       
  139.       FLICFILE ();
  140.       virtual ~FLICFILE ();
  141.  
  142.       BOOLEAN Load ( STRING FileName );
  143.       
  144.       IMAGE* GetImage () { return Image; };
  145.       RGBPALETTE *GetPalette () { return Pal; };
  146.       VOID GetFirstPalette ();
  147.       HDISPLAY GetDisplay () { return hDisplay; };
  148.       BOOLEAN  SetDisplay ( HDISPLAY hDisplay );
  149.       BOOLEAN CreateImage ();
  150.       
  151.       VOID SetFrame ( LONG FrameNumber );
  152.       LONG GetFrame () { return CurrentFrame; };
  153.  
  154.       LONG GetNumFrames () { return FLICHeader.FLI.NumFrames; };
  155.       LONG GetDefaultSpeed () { return DefaultSpeed; };
  156.       
  157.       BOOLEAN IsPalChanged () { return PalChange; };
  158.       VOID PalProcessed () { PalChange = FALSE; };
  159.       LONG GetImageWidth () { return FLICHeader.FLI.Width; };
  160.       LONG GetImageHeight () { return FLICHeader.FLI.Height; };
  161.       BOOLEAN PlayFrame ( BOOLEAN Advance );
  162.       BOOLEAN IsFLCFile () { return IsFLC; };
  163.  
  164.       VOID Convert ( RGBPALETTE *NewPal );
  165.   }; // End of FLICFILE 
  166.  
  167. #endif
  168.